package flow

import "time"

type FLowPoint struct {
	Key  string      `json:"key" bson:"key"`
	Name string      `json:"name" bson:"name"`
	Type string      `json:"type" bson:"type"`
	Lock bool        `json:"lock" bson:"lock"`
	Next []PointNext `json:"next" bson:"next"`
	//Prev []int64 `json:"prev" bson:"prev"`
	//Role  []int64 `json:"role" bson:"role"`
	Auth PointAuth   `json:"auth" bson:"auth"`
	Form []PointForm `json:"form" bson:"form"`

	//审批时实际需要的字段
	FinalState string    `json:"finalState" bson:"finalState"`
	FlowTo     string    `json:"flowTo" bson:"flowTo"`
	FillAt     time.Time `json:"fillAt" bson:"fillAt"`
	FillBy     string    `json:"fillBy" bson:"fillBy"`

	//状态管理权限
	CanCancel bool `json:"canCancel" bson:"canCancel"`
	CanFinish bool `json:"canFinish" bson:"canFinish"`
}

type PointNext struct {
	Key       string `json:"key" bson:"key"`
	Condition string `json:"condition" bson:"condition"`
	IsDefault bool   `json:"isDefault" bson:"isDefault"`
	Note      string `json:"note" bson:"note"`
	Name      string `json:"name" bson:"name"`
}

type PointAuth struct {
	User       []NamedDoc `json:"user" bson:"user"`
	Department []NamedDoc `json:"department" bson:"department"`
}

type PointForm struct {
	Key   string `json:"key" bson:"key"`
	Name  string `json:"name" bson:"name"`
	Type  string `json:"type" bson:"type"`
	Value string `json:"value" bson:"value"`
}

type NamedDoc struct {
	Id   int64  `json:"id" bson:"id"`
	Name string `json:"name" bson:"name"`
}
